﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Business_Entity;
using Business_Logic;
using PetSoft.GUI.GestRecursos;

namespace PetSoft.GUI.Compras
{
    public partial class GUIPedidoCompra : Form
    {
        private List<BEProductoProveedor> lstProductos;
        public List<BELineaPedidoCompra> lstPedidoCompra;
        private BEPedidoCompra bePedidoCompra;
        private BLPedidoCompra blPedidoCompra;
        private BLProveedor blProdProv;
        private BLProductoProveedor ProdxProv=new BLProductoProveedor();
        private int opcionVentana;
        private int idCodigo;
        private int estado;
        private GUIBuscarPedidoCompra gui;
        public GUIPedidoCompra(int opcion,int id,GUIBuscarPedidoCompra guis)
        {
        	try{
	            InitializeComponent();
	            
	            
	            gui=guis;
	            FechaSolicitudDTP.MaxDate=DateTime.Now;
	            FechaEntregaDTP.MaxDate=DateTime.Now;
	            FechaAtencionDTP.MaxDate=DateTime.Now;
	            CodigoPedidoCompraTB.KeyPress+=new KeyPressEventHandler(Utils.SoloNumerosTB);
	            CodigoProductoTB.KeyPress+=new KeyPressEventHandler(Utils.SoloNumerosTB);
	            NombreTB.KeyPress+=new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);
	            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
	            opcionVentana = opcion;
	            idCodigo=id;
	            blPedidoCompra = new BLPedidoCompra();
	            blProdProv = new BLProveedor();
	            opcionVentana = opcion;
	            this.MaximizeBox=false;
	            this.MinimizeBox=false;
	            CargarVentana();
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }
        private void CargarVentana()
        {
        	try{
	        	blPedidoCompra=new BLPedidoCompra();
	        	lstPedidoCompra=new List<BELineaPedidoCompra>();
	        	ListaPedidoCompraDGV.AllowUserToAddRows=false;
	        	ListaProductosDGV.AllowUserToAddRows=false;
	        	FechaAtencionDTP.CustomFormat="yyyyMMdd";
	            FechaSolicitudDTP.CustomFormat="yyyyMMdd";
	            FechaEntregaDTP.CustomFormat="yyyyMMdd";      
				DateTime dia;            
	            if (opcionVentana == 1)
	            {
	            	this.Text="Nueva Pedido de Compra";
	            	bePedidoCompra=new BEPedidoCompra();
	            	CerrarBTN.Visible=false;
	            	ModificarBTN.Visible=false;
	            	FechaEntregaDTP.Enabled=false;
	            	FechaAtencionDTP.Enabled=false;
	            	estado=1;
	            }
	            else{
	            	CodigoPedidoCompraTB.Text=idCodigo+"";
	            	bePedidoCompra=blPedidoCompra.BuscarPedidoCompra(idCodigo);
	            	
	            	EstadoCMB.Text=blPedidoCompra.getEstadoSeleccionado(bePedidoCompra.Estado);
	            	this.Text="Modificar Pedido de Compra";
	            	if (opcionVentana==3){
	            		dia=DateTime.ParseExact(bePedidoCompra.fechaSolicitud.Trim(),"yyyyMMdd",System.Globalization.CultureInfo.CurrentCulture);
	            		FechaSolicitudDTP.Value=dia;
	            		FechaAtencionDTP.Enabled=false;
	            		FechaEntregaDTP.Enabled=false;
	            	}
	            	if (opcionVentana==4){
	            		dia=DateTime.ParseExact(bePedidoCompra.fechaSolicitud.Trim(),"yyyyMMdd",System.Globalization.CultureInfo.CurrentCulture);
	            		FechaSolicitudDTP.Value=dia;
	            		if (bePedidoCompra.fechaAtencion.CompareTo("")!=0){
	            			dia=DateTime.ParseExact(bePedidoCompra.fechaAtencion.Trim(),"yyyyMMdd",System.Globalization.CultureInfo.CurrentCulture);
	            			FechaAtencionDTP.Value=dia;
	            		}
	            		FechaEntregaDTP.Enabled=false;
	            		FechaSolicitudDTP.Enabled=false;
	            	}
	            	if (opcionVentana==4){
	            		dia=DateTime.ParseExact(bePedidoCompra.fechaSolicitud.Trim(),"yyyyMMdd",System.Globalization.CultureInfo.CurrentCulture);
	            		FechaSolicitudDTP.Value=dia;
	            		dia=DateTime.ParseExact(bePedidoCompra.fechaAtencion.Trim(),"yyyyMMdd",System.Globalization.CultureInfo.CurrentCulture);
	            		FechaAtencionDTP.Value=dia;
	            		if (bePedidoCompra.fechaEntrega.CompareTo("")!=0){
		            		dia=DateTime.ParseExact(bePedidoCompra.fechaEntrega.Trim(),"yyyyMMdd",System.Globalization.CultureInfo.CurrentCulture);
		            		FechaEntregaDTP.Value=dia;
	            		}
	            		FechaAtencionDTP.Enabled=false;
	            		FechaSolicitudDTP.Enabled=false;
	            	}
	            	
	            	lstPedidoCompra=blPedidoCompra.getLineaPedidosCompra(idCodigo);
	            	for (int i=0;i<lstPedidoCompra.Count;i++){
	            		lstPedidoCompra[i].Estado='M';
	            	}
	            	this.CargarPedidoCompra(lstPedidoCompra);
	            	if (opcionVentana==3){
	            		this.Size = new System.Drawing.Size(740, 571);
	            	
	            	}
	            }
	            if (EstadoCMB.Text.CompareTo("SOLICITADO")==0){
	            	estado=2;
	            }
	            else{
	            	if ((EstadoCMB.Text.CompareTo("RECEPCIONADO PARCIALMENTE")==0) || (EstadoCMB.Text.CompareTo("RECEPCIONADO TOTALMENTE")==0)){
	            		estado=3;
	            	}
	            	else{
	            		if ((EstadoCMB.Text.CompareTo("RECIBIDO PARCIALMENTE")==0) || (EstadoCMB.Text.CompareTo("RECIBIDO TOTALMENTE")==0)){
	            			estado=4;
	            		}
	            		else{
	            			estado=1;
	            		}
	            	}
	            }
	            List<String> lstTipoProd=ProdxProv.getTipoProducto();
	        	TipoProductoCB.Items.AddRange(lstTipoProd.ToArray());
	            TipoProductoCB.SelectedIndex=lstTipoProd.Count-1;
	            FechaSolicitudDTP.Enabled=false;
	            FechaEntregaDTP.Enabled=false;
	            FechaAtencionDTP.Enabled=false;
	            if (estado==1) {FechaSolicitudDTP.Enabled=true;}
	            
	            ModificarBTN.Enabled=false;
	            CerrarBTN.Enabled=false;
	            
	            for (int i=0;i<BLInfo.usuarioActual.Rol.Privilegio.Count;i++){
	                if ((new BLPrivilegio()).existePrivilegio(1,"COMP","PEDC",BLInfo.UsuarioActual.Rol.Privilegio)){
	                    CerrarBTN.Enabled=true;
	                    
	                }
	            	if ((new BLPrivilegio()).existePrivilegio(2,"COMP","PEDC",BLInfo.UsuarioActual.Rol.Privilegio)){
	            		if ((EstadoCMB.Text==null) || (EstadoCMB.Text.CompareTo("")==0)){
	                    	ModificarBTN.Enabled=true;
	                    	CerrarBTN.Enabled=true;
	                    	
	                    	opcionVentana=1;
	            		}
	            		else if ((EstadoCMB.Text.CompareTo("RECEPCIONADO PARCIALMENTE")==0) || (EstadoCMB.Text.CompareTo("RECEPCIONADO TOTALMENTE")==0)){
	            			ModificarBTN.Enabled=true;
	            			CerrarBTN.Enabled=true;
	            			opcionVentana=3;
	            		}
	                }
	            	if ((new BLPrivilegio()).existePrivilegio(4,"COMP","PEDC",BLInfo.UsuarioActual.Rol.Privilegio)){
	            		if (EstadoCMB.Text.CompareTo("SOLICITADO")==0){
	                    	ModificarBTN.Enabled=true;
	                    	CerrarBTN.Enabled=true;
	                    	opcionVentana=2;
	            		}
	                }
	            }
	            CantPedidoCompraLBL.Text="Cantidad de Productos : "+ListaPedidoCompraDGV.Rows.Count;
	            
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }
        private void CargarPedidosBTN_Click(object sender, EventArgs e)
        {
        	try{
        		GUIPedidoAbastecimiento guiBPC=new GUIPedidoAbastecimiento(1,lstPedidoCompra,this);
            	guiBPC.ShowDialog(this);
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }

        public void CargarPedidoCompra(List<BELineaPedidoCompra> lstped){
        	try{
        		int cont=0;
	        	
	        	ListaPedidoCompraDGV.Rows.Clear();
	        	for (int j=0;j<lstPedidoCompra.Count;j++){
	        		if (lstPedidoCompra[j].Estado.CompareTo('D')!=0){
	            		BELineaPedidoCompra belpc=lstPedidoCompra[j];
	            		ListaPedidoCompraDGV.Rows.Add(new object[] {belpc.ProductoProveedor.Producto.Codigo,belpc.ProductoProveedor.Producto.Nombre,
	            		                              	belpc.ProductoProveedor.Producto.TipoProducto.Descripcion,
	            		                              	belpc.ProductoProveedor.Producto.Descripcion,belpc.Proveedor.RazonSocial,
	            		                              	belpc.CantidadSolicitada,belpc.CantidadRecepcionada,belpc.CantidadRecibida,j+1});
	            	}
	        	}
	        	CantPedidoCompraLBL.Text="Cantidad de Productos : "+ListaPedidoCompraDGV.Rows.Count;
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }
        
        void BuscarBTNClick(object sender, EventArgs e)
        {
        	try{
	        	ListaProductosDGV.Rows.Clear();
	            int id; String nombre; String TProducto;
	            if (CodigoProductoTB.Text==""){id=-1;}
	            else{
	            	id = int.Parse(CodigoProductoTB.Text);
	            }
	            if (NombreTB.Text.Equals("")){nombre="";}
	            else{
	            	nombre = NombreTB.Text;
	            }
	
		            TProducto = TipoProductoCB.SelectedItem.ToString();
		            if (TProducto.CompareTo("<Seleccionar>")==0){TProducto="Todos";}
		            lstProductos = new Business_Logic.BLProductoProveedor().Buscarproductos(id,nombre,TProducto,"TODOS");
		            if (id>0){
		            	if (lstProductos.Count>0){
		            		if (TProducto.CompareTo("Todos")!=0){
		            			if (TProducto.CompareTo(lstProductos[0].Producto.TipoProducto.Descripcion)!=0){
		            				lstProductos.RemoveAt(0);
		            			}
		            		}
		            	}
		            }
		            CargarListaProductos(lstProductos);
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        	CantProductosLBL.Text="Cantidad de Productos : "+ListaProductosDGV.Rows.Count;
	            
        }
        private void CargarListaProductos(List<BEProductoProveedor> lstPedido){
        	try{
	        	int cont=0;
	        	ListaProductosDGV.Rows.Clear();
	        	foreach (BEProductoProveedor Produc in lstProductos)
		            {
		            	cont++;
		                ListaProductosDGV.Rows.Add(new object[] { Produc.Producto.Codigo, Produc.Producto.Nombre, Produc.Producto.TipoProducto.Descripcion, Produc.Producto.Descripcion,cont });
		            }
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }
        private int BuscaFilaxIndiceDeProducto(int index){
        	try{
        		for (int i=0;i<lstProductos.Count;i++)
	        	{
	        		if (int.Parse(lstProductos[i].Producto.Codigo.ToString())==index)
	        		{
	        			return i;
	        		}
	        	}
	        	
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        	
        		return 1;
        	
        }
        private int BuscarFilaporIndice(int index)
        {
        	try{
	        	for (int i=0;i<ListaPedidoCompraDGV.Rows.Count;i++)
	        	{
	        		if (int.Parse(ListaPedidoCompraDGV[0,i].Value.ToString())==index)
	        		{
	        			return i;
	        		}
	        	}
	        	
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        	return 1;
        }
        
        
        private int BuscarIndiceporFila(int index)
        {
        	try{
	        	for (int i=0;i<lstPedidoCompra.Count;i++)
	        	{
	        		if (lstPedidoCompra[i].ProductoProveedor.Producto.Codigo==int.Parse(ListaPedidoCompraDGV[0,index].Value.ToString()))
	        		{
	        			return i;
	        		}
	        	}
	        	
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        	return 1;
        }
        private bool Verificar_Transferencia(int codigo){
        	try{
	        	if (lstPedidoCompra.Count==0){return true;}
	        	for (int i=0;i<lstPedidoCompra.Count;i++){
	        		if (lstPedidoCompra[i].ProductoProveedor.Producto.Codigo==codigo){
	        			return false;
	        		}
	        	}
	        	
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        	return true;
        }
        private void AgregarBTN_Click(object sender, EventArgs e)
        {
        	try{
            int opcion = 1;
            int fila;
            if (ListaProductosDGV.Rows.Count>0)
            {
            	//ProveedorCol=new DataGridViewComboBoxColumn();
                    fila = ListaProductosDGV.CurrentRow.Index;
                    List<BEProveedor> lstproveedores=new List<BEProveedor>();
                    BEProductoProveedor bePP=new BEProductoProveedor();
                    //revisar no siempre se cumple
                    int fil=BuscaFilaxIndiceDeProducto(int.Parse(ListaProductosDGV[0,fila].Value.ToString()));
                    fil=(int)ListaProductosDGV[4,fila].Value;
                    fil--;
                    bePP.Producto.Codigo = lstProductos[fil].Producto.Codigo;
                    bePP.Producto.Nombre=lstProductos[fil].Producto.Nombre;
                    bePP.Producto.Descripcion=lstProductos[fil].Producto.Descripcion;
                    bePP.Producto.TipoProducto.Descripcion=lstProductos[fil].Producto.TipoProducto.Descripcion;
                    bePP.Producto.TipoProducto.Codigo=lstProductos[fil].Producto.TipoProducto.Codigo;
                    
                    List<BEProveedor> lstproveedorees=new List<BEProveedor>();
                    
                    //lstproveedores=blProdProv.getProvxproducto(bePP.Producto.Codigo);
                    
                    //BindingSource bindS=new BindingSource();
                    
//                    for (int i=0;i<lstproveedorees.Count;i++){
//                        bindS.Add(lstproveedorees[i].RazonSocial);
//                    }
//                    ListaPedidoCompraDGV.AutoGenerateColumns=true;
                    //ProveedorCol.DataSource=bindS;
                    int num=lstPedidoCompra.Count;
                    //if (Verificar_Transferencia(bePP.Producto.Codigo)){
	                    if (opcionVentana == 1)
	                    {
	                        BELineaPedidoCompra BeLinea = new BELineaPedidoCompra();
	                        BeLinea.ProductoProveedor = bePP;
	                        BeLinea.CantidadRecepcionada = 0;
	                        BeLinea.CantidadRecibida = 0;
	                        BeLinea.CantidadSolicitada = 0;
	                        BeLinea.Estado='N';
	                        //lstPedidoCompra.Add(BeLinea);
							
							num++;
							if (num==0) {num=1;}
	                        //ListaPedidoCompraDGV.Rows.Add(new object[] { bePP.Producto.Codigo, bePP.Producto.Nombre, bePP.Producto.TipoProducto.Descripcion, bePP.Producto.Descripcion, bePP.Proveedor.RazonSocial, 0, 0, 0,num });
	                        //ListaProductosDGV.Rows.Clear();
	                        lstPedidoCompra.Add(BeLinea);
	                        lstProductos.RemoveAt(fil);
	                        CargarListaProductos(lstProductos);
	                        CargarPedidoCompra(lstPedidoCompra);
	                        int filas=ListaPedidoCompraDGV.Rows.Count;
	                        int filo=lstPedidoCompra.Count;
	                    }
	                    else{
	                        BELineaPedidoCompra BeLinea = new BELineaPedidoCompra();
	                        BeLinea.ProductoProveedor = bePP;
	                        BeLinea.CantidadRecepcionada = 0;
	                        BeLinea.CantidadRecibida = 0;
	                        BeLinea.CantidadSolicitada = 0;
	                        BeLinea.Estado='N';
	                        //blPedidoCompra.AgregarLineaPedidoCompra(BeLinea,idCodigo);
	                        lstPedidoCompra.Add(BeLinea);
	                        //ListaPedidoCompraDGV.Rows.Add(new object[] { bePP.Producto.Codigo, bePP.Producto.Nombre, bePP.Producto.TipoProducto.Descripcion, bePP.Producto.Descripcion,bePP.Proveedor.RazonSocial, 0, 0, 0 ,num});
	                        //ListaProductosDGV.Rows.RemoveAt(fila);
	                        lstProductos.RemoveAt(fil);
	                        CargarPedidoCompra(lstPedidoCompra);
	                        CargarListaProductos(lstProductos);
	                    }
                
                    //}
            }
            CantPedidoCompraLBL.Text="Cantidad de Productos : "+ListaPedidoCompraDGV.Rows.Count;
        	CantProductosLBL.Text="Cantidad de Productos : "+ListaProductosDGV.Rows.Count;
        	}
            catch(Exception ex){
        		Utils.MessageError("",ex);
            }
            
        }

        private void EliminarBTN_Click(object sender, EventArgs e)
        {
        	try{
        		if (ListaPedidoCompraDGV.Rows.Count>0){
		            int fila;
		            fila=ListaPedidoCompraDGV.CurrentRow.Index;
		            int filac=(int)ListaPedidoCompraDGV[8,fila].Value;
		            filac--;
		            if (lstPedidoCompra[filac].Estado.CompareTo('M')==0){
		                lstPedidoCompra[filac].Estado='D';
		            }
		            else{
		            	lstPedidoCompra.RemoveAt(filac);
		            }
		            ListaPedidoCompraDGV.Rows.RemoveAt(fila);
		            CargarPedidoCompra(lstPedidoCompra);
		            CantPedidoCompraLBL.Text="Cantidad de Productos : "+ListaPedidoCompraDGV.Rows.Count;
        		}
        	}
        	catch(Exception ex){
        		Console.WriteLine(ex.Message);
            	MessageBox.Show(ex.Message,"");
        	}
        }
        private int Verificar_Estados_Solicitado(BEPedidoCompra beped){
        	try{
	        	int cants; int cantr;
	        	if (beped.strEstado.CompareTo("SOLICITADO")==0){
	        		for (int i=0;i<ListaPedidoCompraDGV.Rows.Count;i++){
	        			cants=int.Parse(ListaPedidoCompraDGV[5,i].Value.ToString());
	        			cantr=int.Parse(ListaPedidoCompraDGV[6,i].Value.ToString());
	        			if (!(cants==cantr)){
	        				return 0;
	        			}
	        		}
	        		return  1;
	        	}
	        	
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        	return -1;
        }
        private int Verificar_Estados_Recepcionado(BEPedidoCompra beped){
        	try{
	        	int cantr; int cantrec;
	        	if ((beped.strEstado.CompareTo("RECEPCIONADO PARCIALMENTE")==0) || (beped.strEstado.CompareTo("RECEPCIONADO TOTALMENTE")==0)){
	        		for (int i=0;i<ListaPedidoCompraDGV.Rows.Count;i++){
	        			cantr=int.Parse(ListaPedidoCompraDGV[6,i].Value.ToString());
	        			cantrec=int.Parse(ListaPedidoCompraDGV[7,i].Value.ToString());
	        			if (!(cantrec==cantr)){
	        				return 0;
	        			}
	        		}
	        		return 1;
	        	}
	        	
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        	return -1;
        }
        private void AceptarBTN_Click(object sender, EventArgs e)
        {
        	try{
	        	int cants=0;
	        	int cantrb=0;
	        	int cantrp=0;
	        	if (ListaPedidoCompraDGV.Rows.Count!=0){
		        	if (!ValidarProveedoresCompletos()){
			        	BEPedidoCompra bePed=new BEPedidoCompra();
			        	for (int i=0;i<lstPedidoCompra.Count;i++){
			        		if (lstPedidoCompra[i].Estado.CompareTo('D')!=0){
			        			cants+=lstPedidoCompra[i].CantidadSolicitada;
			        			cantrb+=lstPedidoCompra[i].CantidadRecibida;
			        			cantrp+=lstPedidoCompra[i].CantidadRecepcionada;
			        		}
			        	}
			        	
			        	bePed.CantidadTotalRecepcionada=cantrp;
			        	bePed.CantidadTotalRecibida=cantrb;
			        	bePed.CantidadTotalSolicitada=cants;
			        	
			        	bePed.strEstado=EstadoCMB.Text;
			        	
			        	if (opcionVentana==1){
			        		bePed.Estado=1;
			        		bePed.fechaAtencion="";
			                bePed.fechaEntrega="";
			                bePed.fechaSolicitud=FechaSolicitudDTP.Value.ToString("yyyyMMdd");
			                bePed.Estado=1;
			                bePed.strEstado="SOLICITADO";
			                idCodigo=blPedidoCompra.AgregarPedidoCompra(bePed);
			        	}
			            if (opcionVentana > 1)
			            {
			            	bePed=blPedidoCompra.BuscarPedidoCompra(idCodigo);
			            	bePed.CantidadTotalRecepcionada=cantrp;
			        		bePed.CantidadTotalRecibida=cantrb;
			        		bePed.CantidadTotalSolicitada=cants;
			            	int cod=Verificar_Estados_Solicitado(bePed);
			            	if (cod!=-1){
			            		if (cod==0){bePed.Estado=2;}
			            		else{bePed.Estado=3;}
			            	}
			            	else{
			            		cod=Verificar_Estados_Recepcionado(bePed);
			            		if (cod!=-1){
			            			if (cod==0){bePed.Estado=4;}
			            			else{bePed.Estado=5;}
			            		}
			            	}
			                bePed.CantidadTotalSolicitada=cants;
			                bePed.CantidadTotalRecibida=cantrb;
			                bePed.CantidadTotalRecepcionada=cantrp;
			                if (opcionVentana==2){
			                	bePed.fechaAtencion="";
			                	bePed.fechaEntrega="";
			                	bePed.fechaSolicitud=FechaSolicitudDTP.Value.ToString("yyyyMMdd");
			                	//bePed.Estado=1;
			                }
			                if (opcionVentana==3){
			                	bePed.fechaAtencion=FechaAtencionDTP.Value.ToString("yyyyMMdd");
			                	bePed.fechaEntrega="";
			                	bePed.fechaSolicitud=FechaSolicitudDTP.Value.ToString("yyyyMMdd");
			                	//bePed.Estado=2;
			                }
			                if (opcionVentana>3){
			                	bePed.fechaAtencion=FechaAtencionDTP.Value.ToString("yyyyMMdd");
			                	bePed.fechaEntrega=FechaEntregaDTP.Value.ToString("yyyyMMdd");
			                	bePed.fechaSolicitud=FechaSolicitudDTP.Value.ToString("yyyyMMdd");
			                	//bePed.Estado=4;
			                }
			                bePed.Id=idCodigo;
			                blPedidoCompra.ActualizarPedidoCompra(bePed);
			                
			                //bePed.fechaAtencion=FechaAtencionDTP.Value.ToString("yyyyMMdd");
			                //bePed.fechaSolicitud=FechaSolicitudDTP.ToString("yyyyMMdd");
			                //bePed.fechaEntrega=FechaEntregaDTP.ToString("yyyyMMdd");
			                //blPedidoCompra.AgregarPedidoCompra(
			                //for (int i = 0; i < lstPedidoCompra.Count; i++)
			                //{
			                //}
			            
			        	}
			            for (int i=0;i<lstPedidoCompra.Count;i++){
			                	if (lstPedidoCompra[i].Estado.CompareTo('N')==0){
			                		blPedidoCompra.AgregarLineaPedidoCompra(lstPedidoCompra[i],idCodigo);
			                	}
			                	if (lstPedidoCompra[i].Estado.CompareTo('M')==0){
			            		blPedidoCompra.ActualizarLineaPedidoCompra(lstPedidoCompra[i]);
			                	}
			                	if (lstPedidoCompra[i].Estado.CompareTo('D')==0){
			                		blPedidoCompra.EliminarLineaPedidoCompra(lstPedidoCompra[i].Id);
			                	}
			            	BLProductoTienda blpt=new BLProductoTienda();
			            	int idtienda=BLInfo.tiendaActual.Id;
			            	int cantidad=blpt.getStockActual(BLInfo.tiendaActual.Id,lstPedidoCompra[i].ProductoProveedor.Producto.Codigo);
			            	blpt.actualizaStock(lstPedidoCompra[i].ProductoProveedor.Producto.Codigo,idtienda,lstPedidoCompra[i].CantidadRecibida+cantidad);
			            }
			            
			            this.Close();
			            if (opcionVentana==1){
			            		Utils.MessageInformation("Se ha registrado el Pedido de Compra satisfactoriamente");
			            }
			            else{
								Utils.MessageInformation("Se ha modificado el Pedido de Compra satisfactoriamente");		            		
			            }
			            gui.Busqueda();
		        	}
		        	else{
		        		Utils.MessageAviso("Debe de Asignar un proveedor para cada linea del Pedido de Compra");
		        	}
	        	}
	        	else{
	        		Utils.MessageAviso("Debe de ingresar al menos un producto");
	        	}
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }
        
        void DataGridView1CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        	
        }
        
        void AgregarBTNClick(object sender, EventArgs e)
        {
        	try{
	        	int fila = ListaProductosDGV.CurrentRow.Index;
	        	if (BuscarExistenciaListaOrdenesCompra(int.Parse(ListaProductosDGV[0,fila].Value.ToString())))
	            {
	        		BEPedidoCompra beLOC=new BEPedidoCompra();
	        	}
	        	CantPedidoCompraLBL.Text="Cantidad de Productos : "+ListaPedidoCompraDGV.Rows.Count;
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        }
        private bool BuscarExistenciaListaOrdenesCompra(int id){
        	try{
	        	for (int i=0;i<ListaPedidoCompraDGV.Rows.Count;i++)
	        	{
	        		if (int.Parse(ListaPedidoCompraDGV[0,i].Value.ToString())==id)
	        		{
	        			return false;
	        		}
	        	}
	        	
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        	return true;
        }
        
        void GUIPedidoCompraLoad(object sender, EventArgs e)
        {
        	
        }
        void CargarGUILineaPedidoCompra(){
        	
        	GUILineaPedidoCompra guiLPC=new GUILineaPedidoCompra(estado,ListaPedidoCompraDGV,this);
        	guiLPC.ShowDialog(this);
        }
        void VerDetallesBTNClick(object sender, EventArgs e)
        {
        	if (ListaPedidoCompraDGV.Rows.Count>0){
        		CargarGUILineaPedidoCompra();
        	}
        }
        private  bool ValidarProveedoresCompletos(){
        	try{
        		for (int i=0;i<lstPedidoCompra.Count;i++){
	        		if (lstPedidoCompra[i].Proveedor.RazonSocial==null){
	        			return true;
	        		}
	        		if (lstPedidoCompra[i].Proveedor.RazonSocial.CompareTo("")==0){
	        			return true;
	        		}
	        	}
	        	
        	}catch(Exception ex){
        		Utils.MessageError("",ex);
        	}
        	return false;
        }
        void ModificarBTNClick(object sender, EventArgs e)
        {
        	CerrarBTN.Visible=false;
			ModificarBTN.Visible=false;
			if (estado==1) FechaSolicitudDTP.Enabled=true;
			if (estado==2) FechaAtencionDTP.Enabled=true;
			if (estado==3) FechaEntregaDTP.Enabled=true;
			this.Size = new System.Drawing.Size(1300, 571);
			this.StartPosition=FormStartPosition.CenterScreen;			
        }
        
        void CerrarBTNClick(object sender, EventArgs e)
        {
        	this.Close();
        }
        
        void CancelarBTNClick(object sender, EventArgs e)
        {
        	this.Close();
        }
        
        void AceptarBTNClick(object sender, EventArgs e)
        {
        	
        	
        }
    }
}

